<?php

/**
 * 广告标签
 *     1. 引入广告js文件
 *     2. 引入数据库中的广告代码块（通过后台广告管理添加）
 * @author tony <tony@yonglang.co>
 * @version 1.0
 */
class YlAdTaglib {

    public function __construct() {
        C(include SITE_PATH . '/extends/taglib/tagarr.php');
    }

    /**
     * 解析广告标签
     *    <yl:ad adName="名称" source="db|file"></yl:ad>
     *    属性：
     *      adName:后台添加的广告名或引入的js文件名（不包含.js后缀）
     *      source:广告来源(默认来自db)
     *          1：db  来自后台添加的广告代码块
     *          2：file 来自文件（路径：站点目录/ads/广告名.js，如果后台未定义站点目录，则路径为：/ads/广告名.js）
     * @param string $content 解析的内容
     * @param array $sited
     * @return string 解析后的内容
     */
    public function parse($content, $sited) {
        if (stripos($content, 'yl:ad') !== false) {
            $matches = preg_parse($content, 'yl:ad');
            foreach ($matches as $match) {
                //缓存
                static $_adParseCache = array();
                $cacheAdId = md5($match);
                if (isset($_adParseCache[$cacheAdId])) {
                    $text = $_adParseCache[$cacheAdId];
                } else {
                    $adname = getParseOneAttr($match, 'adName');
                    $source = getParseOneAttr($match, 'source');
                    $source = empty($source) ? 'file' : $source;
                    $text = '';
                    if ($source == 'db') {

                        //TODO后台的广告管理有待完善
                        $adInfo = M('ad')->where(array('title' => trim($adname), 'is_active' => 1))->find();
                        if (!$adInfo) {
                            $text = $adInfo['content'];
                        }
                    } else {
                        $dirname = empty($sited['dirname']) ? '' : $sited['dirname'] . '/';
                        $domain = $sited['domain'];
                        $adsPath = $dirname . 'ads/';
                        if ($adname) {
                            $filename = $adsPath . $adname . ".js";
                            $filename = iconv("UTF-8", "GB2312", $filename);
                            if (file_exists($filename)) {
                                $adsUrl = $domain . '/ads/' . $adname . ".js";
                                $text = "<script type=\"text/javascript\" src=\"" . $adsUrl . "\"></script>";
                            }
                        }
                    }
                    $_adParseCache[$cacheAdId] = $text;
                }

                $content = str_replace($match, $text, $content);
            }
        }
        return $content;
    }

}
